/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import controladores.ConvenioXPeriodoXEstudianteFacadeLocal;
import controladores.SeguimientoBitacoraSemanalFacadeLocal;
import entidades.ConvenioXPeriodoXEstudiante;
import entidades.SeguimientoBitacoraSemanal;
import negocio.SeguimientoBitacoraSemanalInterface;
import entidades.Supervisor;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class ListaSeguimientoBitacoraSemanalBean implements Serializable {
    
    @EJB
    private ConvenioXPeriodoXEstudianteFacadeLocal convenioXPeriodoXEstudianteFacadeLocal;
    private List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes;
    private String ESTADO_PERIODO = "ACT";
    private ConvenioXPeriodoXEstudiante estudianteSelected;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private int idSupervisor;
    private int idCoordinador;
    private int idPracticante;
    private int idSupervisorEntidad;
    private final int ROL_COORDINADOR = 2;
    private final int ROL_SUPERVISOR = 3;
    private final int ROL_SUPERVISOR_ENTIDAD = 4;
    private final int ROL_PRACTICANTE = 5;
    private SeguimientoBitacoraSemanal selectedSeguimientoBitacoraSemanal;    
    private List<SeguimientoBitacoraSemanal> seguimientoBitacorasSemanales;
    @EJB
    private SeguimientoBitacoraSemanalInterface seguimientoBitacoraSemanalInterface;
    private boolean disabledListaPracticante;
    private boolean disabledListaSupervisorUniversidad;
    private boolean disabledListaSupervisorEntidad;
    private boolean visibleEdicionFormato;
    
    /**
     * Creates a new instance of ListaSeguimientoBitacoraSemanalBean
     */
    public ListaSeguimientoBitacoraSemanalBean() {
    }

    @PostConstruct
    public void init() {
        switch (sessionBean.getUsuarioSession().getIdRol().getIdRol()){
            case ROL_COORDINADOR:
                idCoordinador = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXPeriodo(ESTADO_PERIODO);
                disabledListaPracticante = true;
                disabledListaSupervisorUniversidad = true;
                visibleEdicionFormato = false;
                break;
            case ROL_SUPERVISOR:
                idSupervisor = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.listarEstudiantesXSupervisor(idSupervisor, ESTADO_PERIODO);
                disabledListaPracticante = true;
                disabledListaSupervisorUniversidad = false;
                visibleEdicionFormato = true;
                break;
            case ROL_PRACTICANTE:
                idPracticante = sessionBean.getUsuarioSession().getIdUsuario();
                convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudianteFacadeLocal.consultarEstudiante(idPracticante, ESTADO_PERIODO);
                disabledListaPracticante = false;
                disabledListaSupervisorUniversidad = true;
                visibleEdicionFormato = false;
                break;
                            
        }
        
    }

    public void listarSeguimientosBitacoraSemanal(ActionEvent actionEvent){
        seguimientoBitacorasSemanales = (List<SeguimientoBitacoraSemanal>) convenioXPeriodoXEstudianteFacadeLocal.consultarConvenioXPeriodoXEstudiante(estudianteSelected.getEstudiante().getIdEstudiante(), ESTADO_PERIODO).getSeguimientoBitacoraSemanalList();
    }
    
    public void permitirEdicionSeguimientoBitacoraSemanal(SeguimientoBitacoraSemanal seguimientoBitacoraSemanal){
        editarSeguimientoBitacoraSemanal(seguimientoBitacoraSemanal);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha permitido la edicion de este formato."));
    }
    
    public void aprobarFormato(SeguimientoBitacoraSemanal seguimientoBitacoraSemanal) {
        editarSeguimientoBitacoraSemanal(seguimientoBitacoraSemanal);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exitoso", "Se ha modificado la aprobaciÃ²n del formato."));
    }
    
    private void editarSeguimientoBitacoraSemanal(SeguimientoBitacoraSemanal seguimientoBitacoraSemanal) {
        try {
            seguimientoBitacoraSemanalInterface.permitirEdicionSeguimientoBitacoraSemanal(seguimientoBitacoraSemanal);
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }
    
    public List<ConvenioXPeriodoXEstudiante> getConvenioXPeriodoXEstudiantes() {
        return convenioXPeriodoXEstudiantes;
    }
    
    public void setConvenioXPeriodoXEstudiantes(List<ConvenioXPeriodoXEstudiante> convenioXPeriodoXEstudiantes) {
        this.convenioXPeriodoXEstudiantes = convenioXPeriodoXEstudiantes;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public List<SeguimientoBitacoraSemanal> getSeguimientoBitacorasSemanales() {
        return seguimientoBitacorasSemanales;
    }

    public void setSeguimientoBitacorasSemanales(List<SeguimientoBitacoraSemanal> seguimientoBitacorasSemanales) {
        this.seguimientoBitacorasSemanales = seguimientoBitacorasSemanales;
    }

   public SeguimientoBitacoraSemanalInterface getSeguimientoBitacoraSemanalInterface() {
        return seguimientoBitacoraSemanalInterface;
    }

    public void setSeguimientoBitacoraSemanalInterface(SeguimientoBitacoraSemanalInterface seguimientoBitacoraSemanalInterface) {
        this.seguimientoBitacoraSemanalInterface = seguimientoBitacoraSemanalInterface;
    }
    
     public ConvenioXPeriodoXEstudiante getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(ConvenioXPeriodoXEstudiante estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public boolean isDisabledListaPracticante() {
        return disabledListaPracticante;
    }

    public void setDisabledListaPracticante(boolean disabledListaPracticante) {
        this.disabledListaPracticante = disabledListaPracticante;
    }

    public boolean isDisabledListaSupervisorUniversidad() {
        return disabledListaSupervisorUniversidad;
    }

    public void setDisabledListaSupervisorUniversidad(boolean disabledListaSupervisorUniversidad) {
        this.disabledListaSupervisorUniversidad = disabledListaSupervisorUniversidad;
    }

    public boolean isDisabledListaSupervisorEntidad() {
        return disabledListaSupervisorEntidad;
    }

    public void setDisabledListaSupervisorEntidad(boolean disabledListaSupervisorEntidad) {
        this.disabledListaSupervisorEntidad = disabledListaSupervisorEntidad;
    }

    public boolean isVisibleEdicionFormato() {
        return visibleEdicionFormato;
    }

    public void setVisibleEdicionFormato(boolean visibleEdicionFormato) {
        this.visibleEdicionFormato = visibleEdicionFormato;
    }

    public SeguimientoBitacoraSemanal getSelectedSeguimientoBitacoraSemanal() {
        return selectedSeguimientoBitacoraSemanal;
    }

    public void setSelectedSeguimientoBitacoraSemanal(SeguimientoBitacoraSemanal selectedSeguimientoBitacoraSemanal) {
        this.selectedSeguimientoBitacoraSemanal = selectedSeguimientoBitacoraSemanal;
    }
    
    public void irFormularioSeguimientoBitacoraSemanal(SeguimientoBitacoraSemanal selectedSeguimientoBitacoraSemanal) {
        try {
            ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
            ctx.redirect("SeguimientoBitacoraSemanal.xhtml?seguimientoBitacoraSemanal=" + selectedSeguimientoBitacoraSemanal.getIdBitacoraSemanal() + "&&accionSeguimientoBitacoraSemanal=Consultar");
            
        } catch (IOException ex) {
            Logger.getLogger(ListaSeguimientoBitacoraSemanalBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
